package com.chatmcp.mcprouter.service;

import java.util.concurrent.TimeUnit;

/**
 * 缓存服务接口
 * 提供缓存的存取操作
 */
public interface CacheService {

    /**
     * 初始化缓存服务
     * 
     * @param cacheName 缓存名称
     * @return 是否初始化成功
     */
    boolean initCache(String cacheName);

    /**
     * 检查缓存中是否存在指定键
     *
     * @param key 键
     * @return 是否存在
     */
    boolean hasKey(String key);

    /**
     * 从缓存中获取指定键的值
     *
     * @param key   键
     * @param clazz 值的类型
     * @param <T>   值的类型参数
     * @return 值，如果不存在则返回null
     */
    <T> T get(String key, Class<T> clazz);

    /**
     * 将值存入缓存
     *
     * @param key   键
     * @param value 值
     * @param <T>   值的类型参数
     */
    <T> void set(String key, T value);

    /**
     * 将值存入缓存，并设置过期时间
     *
     * @param key     键
     * @param value   值
     * @param timeout 过期时间
     * @param unit    时间单位
     * @param <T>     值的类型参数
     */
    <T> void set(String key, T value, long timeout, TimeUnit unit);

    /**
     * 从缓存中删除指定键的值
     *
     * @param key 键
     * @return 是否成功删除
     */
    boolean delete(String key);
} 